Context-based adaptive binary arithmetic coding (CABAC) is a high efficiency entropy coding tool that has been widely used in advanced video coding such as H.264 and HEVC (High Efficiency Video Coding). For example, various syntax elements of the HEVC standard are coded in the CABAC mode, where entropy coding is applied to the binarized syntax elements adaptively based on context associated with an underlying syntax element. FIG. 1 illustrates an exemplary block diagram of the CABAC process. Since the arithmetic coder in the CABAC engine can only encode the binary symbol values, the CABAC process needs to convert the values of the syntax elements into a binary string using a binarizer (110). The conversion process is commonly referred to as binarization. During the coding process, the probability models are gradually built up from the coded symbols for the different contexts. The context modeler (120) serves the modelling purpose. During normal context based coding, the regular coding engine (130) is used, which corresponds to a binary arithmetic coder. The selection of the modeling context for coding the next binary symbol can be determined by the coded information. Symbols can also be encoded without the context modeling stage and assume an equal probability distribution, commonly referred to as the bypass mode, for reduced complexity. For the bypassed symbols, a bypass coding engine (140) may be used. As shown in FIG. 1, switches (S1, S2 and S3) are used to direct the data flow between the regular CABAC mode and the bypass mode. When the regular CABAC mode is selected, the switches are flipped to the upper contacts. When the bypass mode is selected, the switches are flipped to the lower contacts, as shown in FIG. 1
As mentioned above, CABAC is a form of entropy coding. CABAC can be applied to source symbols to reduce the required data for representing the source symbols. When CABAC is applied to a video coding system, the source symbols may correspond to the prediction residuals, motion information, coding parameters, etc. For example, CABAC is used in HEVC, where the standard is based on the conventional hybrid coding approach. According to HEVC, a picture is divided into multiple non-overlapped largest coding units (LCUs), also called coding tree blocks (CTBs). The pixel values of a coding unit (CU) are predicted spatially or temporally. The resulting residual signal is transformed for further redundancy removal. The transform coefficients are then quantized and entropy coded. The reconstructed picture is recovered from the decoded residual signal and the prediction signal. After reconstruction, the reconstructed picture is further processed by in-loop filtering to reduce coding artifacts. FIG. 2 illustrates an exemplary system block diagram for a HEVC-based encoder.
FIG. 2 illustrates an exemplary adaptive Inter/Intra video coding system incorporating in-loop processing according to HEVC. For inter-prediction, Motion Estimation (ME)/Motion Compensation (MC) 212 is used to provide prediction data based on video data from other picture or pictures. Switch 214 selects Intra Prediction 210 or inter-prediction data and the selected prediction data is supplied to Adder 216 to form prediction errors, also called residues. The prediction error is then processed by Transform (T) 218 followed by Quantization (Q) 220. The transformed and quantized residues are then coded by Entropy Encoder 222 to form a video bitstream corresponding to the compressed video data. The bitstream associated with the residues is then packed with side information such as motion, mode, and other information associated with the image area. The side information may also be subject to entropy coding to reduce required bandwidth. Accordingly, the data associated with the side information are provided to Entropy Encoder 222 as shown in FIG. 2. In the Intra mode, a reconstructed block may be used to form Intra prediction of spatial neighboring block. Therefore, a reconstructed block from REC 228 may be provided to Intra Prediction 210. When an inter-prediction mode is used, a reference picture or pictures have to be reconstructed at the encoder end as well. Consequently, the transformed and quantized residues are processed by Inverse Quantization (IQ) 224 and Inverse Transform (IT) 226 to recover the residues. The residues are then added back to prediction data 236 at Reconstruction (REC) 228 to reconstruct video data. The reconstructed video data can be stored in Reference Picture Buffer 234 and used for prediction of other frames.
As shown in FIG. 2, incoming video data undergoes a series of processing in the encoding system. The reconstructed video data from REC 228 may be subject to various impairments due to a series of processing. Accordingly, various in-loop processing is applied to the reconstructed video data before the reconstructed video data are stored in the Reference Picture Buffer 234 in order to improve video quality. In the High Efficiency Video Coding (HEVC) standard, deblocking (DF) processing module 230, Sample Adaptive Offset (SAO) processing module 231 have been developed to enhance picture quality. The in-loop filter information may have to be incorporated in the bitstream so that a decoder can properly recover the required information. Therefore, in-loop filter information from SAO is provided to Entropy Encoder 222 for incorporation into the bitstream. In FIG. 2, DF 230 is applied to the reconstructed video first and SAO 231 is then applied to DF-processed video (i.e., deblocked video).
The JCT standardization body is currently in the process of developing the HEVC screen content coding (SCC) extension. In contrast to the conventional natural video with a continuous color tone, the screen content video often contain a few pilot colors and sharp edges and boundaries. Several new tools such as Intra block copy (IBC), palette coding, Intra line copy and Intra string copy (ISC) are currently under investigation for potential adoption into the future the HEVC SCC extension. Again, CABAC can be applied to residuals or coding information associated with these new tools. The details of IBC and palette coding can be found in JCTVC-S1005 (Joshi, et al., High Efficiency Video Coding (HEVC) Screen Content Coding: Draft 2, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 19th Meeting: Strasbourg, FR, 17-24 Oct. 2014, Document: JCTVC-51005). The details of Intra line copy and Intra string copy (ISC) can be found in JCTVC-S1103 (Chen, et al., Description of Core Experiment 3 (CE3): Intra Line Copy and Intra String Copy, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 19th Meeting: Strasbourg, FR, 17-24 Oct. 2014, Document: JCTVC-51103).